//
// Created by XML on 2023/9/18.
//
#include <stdio.h>
#include <stdarg.h>

// 函数的变长参数 https://blog.csdn.net/code_peak/article/details/121053884
void HandleVarargs(int arg_count, ...) {
    // 1、定义va_list 用于获取我们的变长参数
    va_list args;
    // 2、开始遍历
    va_start(args, arg_count);
    for (int i = 0; i < arg_count; ++i) {
        // 3、取出对应的参数，（va_list,type）
        int arg = va_arg(args, int);
        printf("%d: %d\n", i, arg);
    }
    // 4. 结束遍历
    va_end(args);
}

void print_numbers(int num, ...) {
    va_list ap;
    va_start(ap, num);

    for (int i = 0; i < num; i++) {
        int value = va_arg(ap, int);
        printf("%d ", value);
    }

    va_end(ap);
}

int main(){
    HandleVarargs(2,8,7,9);
    print_numbers(4, 1,2,3,4);
    return 0;
}